/**
 * 返回的参数为 lightData, createScene, createLighth
 * @function 2.用来创建场景创建粮仓场景对象并且创建一个环境光
 * @returns { Object }
 */
// 导入Vue组合API
import { shallowReactive } from 'vue'
// 引入Three.js
import * as THREE from 'three'
// 导入模型
import { contentModel } from './model.js'
// 导入配置项
import config from './config'
// 导入配置信息
const { content } = config()
// 数据
const contentScene = shallowReactive({
  // 声明场景
  scene: {}
})
/**
 * 创建场景对象
 */
const getScene = () => {
  // 导入添加场景的方法
  // 结构场景对象数据
  const { model } = contentModel
  // 声明场景
  contentScene.scene = new THREE.Scene()
  // 粮仓基地三维模型添加到场景中
  contentScene.scene.add(model)
  // 添加光源的方法
  getLight()
  // 创建雾化
  getFog()
  // 添加辅助线的方法
  getHelper()
}
/**
 * 创建光源设置
 */
const getLight = () => {
  // 平行光1
  const directionalLight = new THREE.DirectionalLight(0xffffff, 0.6)
  directionalLight.position.set(400, 200, 300)
  contentScene.scene.add(directionalLight)
  // 平行光2
  const directionalLight2 = new THREE.DirectionalLight(0xffffff, 0.6)
  directionalLight2.position.set(-400, -200, -300)
  contentScene.scene.add(directionalLight2)
  // 环境光
  const ambient = new THREE.AmbientLight(0xffffff, 0.6)
  contentScene.scene.add(ambient)
}
/**
 * 创建雾化
 */
const getFog = () => {
  // 给场景添加雾化
  contentScene.scene.fog = new THREE.Fog(content.fogColor, -100, 1000)
}
/**
 * 创建辅助线
 */
const getHelper = () => {
  // Three.js三维坐标轴 三个坐标轴颜色RGB分别对应xyz轴
  const axesHelper = new THREE.AxesHelper(250)
  contentScene.scene.add(axesHelper)
}

export { contentScene, getScene }
